Odchceni eventu v komponente

Otázka od: Petr Selinger

12. 11. 2002 9:51

Resim nasledujici problem:

  Mam komponentu, ktera podle toho, kde je na ni kurzor mysi, tak
  zobrazuje do hintu ruzne texty. Resim to tak, ze pri Create
  komponenty priradim Application.OnShowHint := DoShowHint;

  Pak uz klasicky v procedure DoShowHint osetrim texty, ktere se maji
  zobrazovat, barvu, pozici, atd.

  Vse funguje dobre v pripade, ze mam na formulari pouze jednu tuto
  komponentu. V pripade ze jich tam dam vice, tak logicky ty pozdeji
  vytvorene si 'ukradnou' udalost OnShowHint a pak funguje jen ta
  posledni.

  Neni nejaky zpusob, jak bez vytvareni si vlastnich hint window
  a cele obsluhy kolem toho, donutit ostatni komponenty, aby take
  reagovaly na tuto udalost?

  Diky, zdravi Petr.

  D5UP2, W2kSP2

  






--------------------
Centrum pro milovníky peněz http://finance.centrum.cz

Odpovedá: Andreas Bednarek

12. 11. 2002 11:37

Tomu moc nerozumim, ja mam na formulari komponent jako na....ych (ehm) a
nemam s tim problem.

O jakou komponentu se jedna?

Application.OnHint se vyvola vzdy kdyz se ma zobrazit hint (prislusna
komponenta musi mit nastavene properties Hint a ShowHint). Nevim proc by si
nejaka komponenta mela 'krast' tuto udalost jen pro sebe, zalezi prece na
poloze kurzoru nad kterou je komponentou ne? Rekl bych, ze problem bude
nekde jinde.

zdravim
A.



----- Original Message -----
From: Petr Selinger <delphiforum@centrum.cz>
To: <delphi-l@clexpert.cz>
Sent: Tuesday, November 12, 2002 8:51 AM
Subject: Odchceni eventu v komponente


> Resim nasledujici problem:
>
> Mam komponentu, ktera podle toho, kde je na ni kurzor mysi, tak
> zobrazuje do hintu ruzne texty. Resim to tak, ze pri Create
> komponenty priradim Application.OnShowHint := DoShowHint;
>
> Pak uz klasicky v procedure DoShowHint osetrim texty, ktere se maji
> zobrazovat, barvu, pozici, atd.
>
> Vse funguje dobre v pripade, ze mam na formulari pouze jednu tuto
> komponentu. V pripade ze jich tam dam vice, tak logicky ty pozdeji
> vytvorene si 'ukradnou' udalost OnShowHint a pak funguje jen ta
> posledni.
>
> Neni nejaky zpusob, jak bez vytvareni si vlastnich hint window
> a cele obsluhy kolem toho, donutit ostatni komponenty, aby take
> reagovaly na tuto udalost?
>
> Diky, zdravi Petr.
>
> D5UP2, W2kSP2
>
>
>
>
>
>
>
>
> --------------------
> Centrum pro milovníky peněz http://finance.centrum.cz
>
>

Odpovedá: Petr Vones

17. 11. 2002 15:23

From: "Ondrej Kelle" <O.Kelle@digitalpublishing.de>
> Mozes si napisat aj vlastne hinty, ale nemusis. Staci, ak si (namiesto
> nastavovania Application.OnHint) osetris spravu CM_HINTSHOW.
> Ako si zistil, komponenty nemozu menit vlastnosti globalnych premennych a
> spoliehat sa na to, ze nejaky iny komponent alebo kod v programe im ich
> neprepise.

V pripade TApplication.OnHint by slo pouzit komponentu TApplicationEvents kde
lze na jednu udalost (TApplication.OnHint) napojit vice 'spotrebitelu'. V tom
danem pripade je ale samozrejme lepsi odchyceni te zpravy.

Mimochodem v .NETu jsou z tohoto pohledu udalosti vyresene ponekud pruzneji.

Petr Vones

Odpovedá: Petr Selinger

13. 11. 2002 10:10

Ta komponenta je vlastni vyroby a ve zkratce se jedna o to,
ze potrebuji odchytit udalost hintu na teto komponente a zobrazit
si vlastni text, ktery se meni v zavislosti na pozici kurzoru mysi.
Ostatni hinty na formulari samozrejme funguji, komponenta jim nic
'nekrade'. Problem je pouze s vice instancemi teto komponenty, ktera
se 'povesi' na udalost Application.OnHint a jediny, kdo je schopen
na udalost zareagovat je prave ta posledni vytvorena instance teto
komponenty.

Kazdopadne jiz problem resim tvorbou vlastnich hintu, ktere se
vyvolaji, kdyz nad komponentou prejedu mysi a ukazuji potrebne texty.

Zdravi, Petr.



> Tomu moc nerozumim, ja mam na formulari komponent jako na....ych
(ehm) a
> nemam s tim problem.

> O jakou komponentu se jedna?

> Application.OnHint se vyvola vzdy kdyz se ma zobrazit hint
(prislusna
> komponenta musi mit nastavene properties Hint a ShowHint). Nevim
proc by si
> nejaka komponenta mela 'krast' tuto udalost jen pro sebe, zalezi
prece na
> poloze kurzoru nad kterou je komponentou ne? Rekl bych, ze problem
bude
> nekde jinde.

> zdravim
> A.



> ----- Original Message -----
> From: Petr Selinger <delphiforum@centrum.cz>
> To: <delphi-l@clexpert.cz>
> Sent: Tuesday, November 12, 2002 8:51 AM
> Subject: Odchceni eventu v komponente


>> Resim nasledujici problem:
>>
>> Mam komponentu, ktera podle toho, kde je na ni kurzor mysi, tak
>> zobrazuje do hintu ruzne texty. Resim to tak, ze pri Create
>> komponenty priradim Application.OnShowHint := DoShowHint;
>>
>> Pak uz klasicky v procedure DoShowHint osetrim texty, ktere se
maji
>> zobrazovat, barvu, pozici, atd.
>>
>> Vse funguje dobre v pripade, ze mam na formulari pouze jednu tuto
>> komponentu. V pripade ze jich tam dam vice, tak logicky ty
pozdeji
>> vytvorene si 'ukradnou' udalost OnShowHint a pak funguje jen ta
>> posledni.
>>
>> Neni nejaky zpusob, jak bez vytvareni si vlastnich hint window
>> a cele obsluhy kolem toho, donutit ostatni komponenty, aby take
>> reagovaly na tuto udalost?
>>
>> Diky, zdravi Petr.
>>
>> D5UP2, W2kSP2


--------------------
Nový vyhledávač pro český internet www.WebFast.cz - prostě najde ...